PostgreSQL 全文搜索 预定义配置
1 背景知识
文本搜索配置 是指,将文档转换为 tsvector 类型所需要的处理步骤。将包含以下两个部分。
调用 to_tsvector 和 to_tsquery 函数,都需要执行以上两个步骤。
参数 default_text_search_config 可以指定默认的文本搜索配置 。此参数可以在 postgersql.conf
文件中设置,也可以在会话中使用 SET
命令设置。
目前在 PostgreSQL 数据库中有几种预定义的文本搜索配置可供选择,当然也可以自定义文本搜索配置。
psql 命令还可以显示文本搜索对象配置的和词典的信息,请参见 \dF 命令的使用。
2 环境准备
2.1 创建一个自定义的文本搜索配置
- 这里使用内置的
english
预定义配置为模版,创建新的搜索配置pg
。
CREATE TEXT SEARCH CONFIGURATION public.pg (COPY = pg_catalog.english);
- 查看自定义配置。
\dF public.pg;
2.2 创建一个同义词词典典
- 编辑
$SHAREDIR/tsearch_data/pg_dict.syn
。
vi $PGHOME/share/tsearch_data/pg_dict.syn
postgres pg
pgsql pg
postgresql pg
- 创建同义词词典。
CREATE TEXT SEARCH DICTIONARY pg_dict (
TEMPLATE = synonym,
SYNONYMS = pg_dict
);
2.3 创建Ipspell 词典
CREATE TEXT SEARCH DICTIONARY english_ispell (
TEMPLATE = ispell,
DictFile = english,
AffFile = english,
StopWords = english
);